﻿using Sensor.UI.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Sensor.UI.Protocols;

public static class TestProtocolSensorConverter
{
    public static SensorInfo? Process(string data)
    {
        try
        {
            // 分割数据
            string[] parts = data.Split([' '], StringSplitOptions.RemoveEmptyEntries);

            // 验证数据格式：应该有16个部分（4个传感器，每个4个值：d0,x0,y0,z0）
            if (parts.Length != 16)
            {

                return null;
            }

            var sensorInfo = new SensorInfo();

            // 解析每个传感器的数据
            for (int i = 0; i < 4; i++)
            {
                int dataIndex = i * 4; // 每个传感器数据在数组中的起始索引

                // 验证标识符（d0, d1, d2, d3）
                string identifier = parts[dataIndex];
                if (!identifier.Equals($"d{i}", StringComparison.OrdinalIgnoreCase))
                {
                    return null;
                }
                // 解析坐标值
                if (double.TryParse(parts[dataIndex + 1], out double x) &&
                    double.TryParse(parts[dataIndex + 2], out double y) &&
                    double.TryParse(parts[dataIndex + 3], out double z))
                {
                    // 创建传感器项信息，索引为i（0,1,2,3），坐标为对应的x,y,z值
                    sensorInfo.SensorItemInfos.Add(new SensorItemInfo
                    {
                        Index = i,      // d0对应Index=0，d1对应Index=1，以此类推
                        X = x,          // x0对应第一个传感器的X坐标，x1对应第二个传感器的X坐标
                        Y = y,          // y0对应第一个传感器的Y坐标，y1对应第二个传感器的Y坐标
                        Z = z           // z0对应第一个传感器的Z坐标，z1对应第二个传感器的Z坐标
                    });
                }
                else
                {
                    return null;
                }
            }
            return sensorInfo;
        }
        catch (Exception)
        {
            return null;
        }

    }
}
